const path = require('path');
const express = require('express');
const bodyParser = require('body-parser');
const total_config = require('./config.js');

// 导入 mysql minio 模块
const mysql = require('./db/mysql57');
const minio = require('./db/minio');

// 读取配置端口
const port = total_config.port;

// 引入路由
const login_router = require('./router/login.js');
const user_router = require('./router/user.js');
const post_router = require('./router/post.js');
const activity_router = require('./router/activity.js');

// 引入中间件
const checkUserToken = require('./middleware/checkUserToken');

// 实例化 express 服务器
const app = express();

// 输出所有请求的日志
app.use(function (req, res, next) {
    // 记录请求到达服务端的时间戳
    req.time = new Date();
    // req.formatTime = date_tool.formatDate(req.time);
    // req.formatDate = req.formatTime.split(' ')[0];
    // 输出请求的日志 - 如果使用了反向代理 此处的地址可能不是客户端的 需要修改
    console.log(`${req.connection.remoteAddress} | ${req.method} ${req.originalUrl} | `);
    next();
});

// 静态资源挂载
app.use(express.static(path.join(__dirname, 'public')));

// 设置http请求报文的长度限制为 15M
app.use(bodyParser.json({limit: '15mb'}));
app.use(bodyParser.urlencoded({limit: '15mb', extended: true}));

// 接收 json 请求体
app.use(express.json());

// 路由挂载
app.use('/login', login_router);
app.use(checkUserToken);
app.use('/user', user_router);
app.use('/post', post_router);
app.use('/activity', activity_router);

// 开启服务器
app.listen(port, async () => {
    // 等待数据库连接
    await mysql.init();
    await minio.initMinIO();
    // 输出服务器启动信息
    console.log(`服务器启动于 ${ port } 端口...`)
    console.log(`http://127.0.0.1:${ port }`)
});